//  -------------------------------------------------------------------------
//  Copyright (C) 2016 BMW Car IT GmbH
//  -------------------------------------------------------------------------
//  This Source Code Form is subject to the terms of the Mozilla Public
//  License, v. 2.0. If a copy of the MPL was not distributed with this
//  file, You can obtain one at https://mozilla.org/MPL/2.0/.
//  -------------------------------------------------------------------------

#pragma once

#include "internal/Core/Utils/LoggingUtils.h"

namespace ramses::internal
{
    using ramses::EKeyCode;

    const std::array KeyCodeNames =
    {
        "EKeyCode_Unknown = 0",

        "EKeyCode_A",
        "EKeyCode_B",
        "EKeyCode_C",
        "EKeyCode_D",
        "EKeyCode_E",
        "EKeyCode_F",
        "EKeyCode_G",
        "EKeyCode_H",
        "EKeyCode_I",
        "EKeyCode_J",
        "EKeyCode_K",
        "EKeyCode_L",
        "EKeyCode_M",
        "EKeyCode_N",
        "EKeyCode_O",
        "EKeyCode_P",
        "EKeyCode_Q",
        "EKeyCode_R",
        "EKeyCode_S",
        "EKeyCode_T",
        "EKeyCode_U",
        "EKeyCode_V",
        "EKeyCode_W",
        "EKeyCode_X",
        "EKeyCode_Y",
        "EKeyCode_Z",

        "EKeyCode_0",
        "EKeyCode_1",
        "EKeyCode_2",
        "EKeyCode_3",
        "EKeyCode_4",
        "EKeyCode_5",
        "EKeyCode_6",
        "EKeyCode_7",
        "EKeyCode_8",
        "EKeyCode_9",

        "EKeyCode_NumLock",
        "EKeyCode_Numpad_Add",
        "EKeyCode_Numpad_Subtract",
        "EKeyCode_Numpad_Multiply",
        "EKeyCode_Numpad_Divide",
        "EKeyCode_Numpad_Enter",
        "EKeyCode_Numpad_Decimal",
        "EKeyCode_Numpad_0",
        "EKeyCode_Numpad_1",
        "EKeyCode_Numpad_2",
        "EKeyCode_Numpad_3",
        "EKeyCode_Numpad_4",
        "EKeyCode_Numpad_5",
        "EKeyCode_Numpad_6",
        "EKeyCode_Numpad_7",
        "EKeyCode_Numpad_8",
        "EKeyCode_Numpad_9",

        "EKeyCode_Return",
        "EKeyCode_Escape",
        "EKeyCode_Backspace",
        "EKeyCode_Tab",
        "EKeyCode_Space",
        "EKeyCode_Menu",
        "EKeyCode_CapsLock",
        "EKeyCode_ShiftLeft",
        "EKeyCode_ShiftRight",
        "EKeyCode_AltLeft",
        "EKeyCode_AltRight",
        "EKeyCode_ControlLeft",
        "EKeyCode_ControlRight",
        "EKeyCode_WindowsLeft",
        "EKeyCode_WindowsRight",

        "EKeyCode_F1",
        "EKeyCode_F2",
        "EKeyCode_F3",
        "EKeyCode_F4",
        "EKeyCode_F5",
        "EKeyCode_F6",
        "EKeyCode_F7",
        "EKeyCode_F8",
        "EKeyCode_F9",
        "EKeyCode_F10",
        "EKeyCode_F11",
        "EKeyCode_F12",

        "EKeyCode_PrintScreen",
        "EKeyCode_ScrollLock",
        "EKeyCode_Pause",

        "EKeyCode_Insert",
        "EKeyCode_Home",
        "EKeyCode_PageUp",
        "EKeyCode_Delete",
        "EKeyCode_End",
        "EKeyCode_PageDown",

        "EKeyCode_Right",
        "EKeyCode_Left",
        "EKeyCode_Up",
        "EKeyCode_Down",

        "EKeyCode_Minus",
        "EKeyCode_Equals",
        "EKeyCode_LeftBracket",
        "EKeyCode_RightBracket",
        "EKeyCode_Backslash",
        "EKeyCode_Semicolon",
        "EKeyCode_Comma",
        "EKeyCode_Period",
        "EKeyCode_Slash",
        "EKeyCode_Apostrophe",
        "EKeyCode_Grave",
        "EKeyCode_NumberSign"
    };

    ENUM_TO_STRING(ramses::EKeyCode, KeyCodeNames, ramses::EKeyCode_NumberSign);

}
